﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using tea.DB;
using tea.Models;
using Util;

namespace tea.BL
{
    public class BL지원
    {
        // 지원 상태
        public const string 신청 = "신청";
        public const string 승인 = "승인";
        public const string 미승인 = "미승인";

        public static string 상태(DB.지원 지원)
        {
            if (지원.승인일 != null) return 승인;
            if (DateTime.Now >= 지원.채용.신청기간2.AddDays(1)) return 미승인;
            return 신청;
        }

        public static bool 현재사용자가_지원신청서를_볼수있는가(DB.지원 data)
        {
            if (BL사용자.IsAdminOrStaff()) return true;
            if (BL사용자.현재사용자.ID != data.사용자ID) return false;
            return true;
        }

        public static bool 현재사용자가_지원신청서를_수정할수있는가(DB.지원 data)
        {
            if (BL사용자.IsAdmin()) return true;
            if (BL사용자.현재사용자.ID != data.사용자ID) return false;
            return BL지원.상태(data) == BL지원.신청;
        }

        // 채용 상태
        public const string 시작전 = "시작전";
        public const string 마감 = "마감";
        public const string 진행중 = "진행중";

        public static string 상태(DB.채용 채용)
        {
            var 지금 = DateTime.Now;
            if (지금 < 채용.신청기간1) return 시작전;
            if (지금 >= 채용.신청기간2.AddDays(1)) return 마감;  // 정보: 날짜는 0시 정각으로 저장됨
            return 진행중;
        }

        public static List<심사서Model> 심사서목록(int 채용ID)
        {
            using (var db = new DBDataContext()) {
                var 채용 = db.채용.Single(p => p.ID == 채용ID);

                var 목록 = new List<심사서Model>();
                foreach (var 지원 in 채용.지원) {
                    var 이력서 = 지원.사용자.이력서;
                    var 최종학력 = 이력서.이력서_학력.OrderBy(p => p.구분).First();
                    var 심사서 = new 심사서Model {
                        이름 = 지원.사용자.이름,
                        생년월일 = 이력서.생년월일,
                        최종학위학과 = 최종학력.학과,
                        최종학위전공 = 최종학력.전공
                    };
                    int i = 1;
                    foreach (var n in 지원.지원_강의) {
                        BeanUtil.SetProperties(심사서, string.Format("강의{0}", i), string.Format("{0} - {1}", n.강의.학기, n.강의.강의명));
                        ++i;
                    }
                    목록.Add(심사서);
                }
                return 목록;
            }
        }

    }
}

